#[derive(Debug, Default)]
struct Test {
    x: i32,
}

fn main() {
    // 数组的倒序排序 3,2,1
    // for number in (1..4).rev() {
    //     println!("{}", number);
    // }

    // let mut x = 5;
    // let y = x;
    // println!("x = {}; * = {:p}", x, &x);
    // x = 6;
    // println!("x = {:p}", &x);
    // println!("y = {:p}", &y);

    // let x = 5;
    // let y = x;
    // println!("x = {:p}", &x);
    // println!("y = {:p}", &y);

    // let s1 = String::from("hello");
    // println!("&s1 = {:p}", &s1);
    // let s2 = &s1;
    // // println!("&s1 = {:p}", &s1); // s1 的所有权已经全部移交给了 s2
    // println!("&s2 = {:p}", s2);

    use std::thread;
    use std::time::Duration;

    // let mut count = 0;
    // loop {
    //     count += 1;
    //     let x = 5;
    //     println!("count {} x =  {:p}", count, &x);
    //     if count >= 2 {
    //         break;
    //     }
    // }

    thread::spawn(|| {
        for i in 1..10 {
            let x = 5;
            println!("==== spawn {} x =  {:p} ===", i, &x);
        }
    });

    for i in 1..3 {
        if i > 1 {
            thread::sleep(Duration::from_millis(1));
        }
        let x = 5;
        println!("main {} x =  {:p}", i, &x);
    }
}
